1.24 Ein theoretischer Exkurs: Objekte, Eigenschaften und Methoden
 
Wir sprechen nun schon die ganze Zeit von Objekten, Methoden, Eigenschaften und Ereignissen. Was ist das denn eigentlich?
1.24.1 Objekte
 
Objekte sind aus der realen Welt bekannt: ein Baum, ein Motorrad oder eine Heizung sind Objekte. Beispiele für Objekte in VB.NET sind Meldungsfenster, Dialogblätter und Steuerelemente. Ebenso sind die Programme (beispielsweise Word, Excel und Outlook) selbst Objekte (sie heißen Application) oder auch Elemente der Programme: Dokumente, Tabellen, markierter Text, ein grafisches Objekt. In VB.NET muss das Objekt klar definiert sein, bevor ihm eine Methode oder Eigenschaft zugewiesen wird, beziehungsweise bevor die Eigenschaft geändert werden kann. Diese Objekte stellen die oberste Ebene dar.
1.24.2 Methoden
 
Methoden sind Aktionen, die von den Objekten ausgeführt werden. In der realen Welt wäre es:
Baum.BlätterFallenLassen
Baum.Wachsen
Motorrad.Starten
Motorrad.Bremsen
und so weiter. In VB.NET kann man eine Dialogbox nehmen. Eine ihrer Methoden heißt show. Soll also das Dialogblatt gezeigt werden, so wird das Objekt (nennen wir es »frmKaffeeautomat«) aufgerufen mit der entsprechenden Methode Show:
frmKaffeeautomat.ActiveForm.Show
Methoden sind in der Liste an dem lila Radiergummi erkennbar (oder ist es eher ein Pflasterstein von Berliner Autonomen?):
Abbildung 1.39
Methoden
Nehmen wir ein Formular als Beispiel: Das oberste Objekt heißt dort »Me« - dieses Objekt steht an der Spitze der Hierarchie (und ist deshalb häufig redundant, das heißt, es kann geschrieben werden oder auch nicht). »Me« entspricht dem Formular selbst. Dieses Objekt hat nun eine Reihe von Methoden, beispielsweise:
Me.Activate
Me.Show
Me.Close
1.24.3 Eigenschaften
 
Eigenschaften sind uns in den Dialogboxen über das Eigenschaftenfenster begegnet. Alle Eigenschaften, die dort eingestellt werden können, können auch durch Programmierung während der Laufzeit verändert werden. Ein formatiertes Bild mit der Eigenschaft Visible = False kann beim Start dennoch sichtbar sein, wenn bei der Initialisierung im Programmcode die Eigenschaft Visible = True vergeben wird. Sie hat Priorität gegenüber den Voreinstellungen.
Dann erscheinen die Eigenschaften mit einem Fingersymbol, das auf ein weißes Blatt zeigt.
Abbildung 1.40
Eigenschaften
In der Realität sind Eigenschaften Attribute von Dingen. Beispielsweise:
Baum.Höhe = 10
Baum.Umfang = 5
Motorrad.PS = 130
Motorrad.Farbe = "Blau"
Eigenschaften einer Userform sind beispielsweise »Location«, »Text« und »Name«. Bei einem Label sind Eigenschaften »Font«, »TextAlign« oder »Visible«. Eigenschaften liefern Informationen über das Objekt oder können verändert werden. So wird mit der Eigenschaft »Name« der Name des Formulars oder des Steuerelements abgefragt und an eine Variable (strFormName) übergeben:
strFormName = Me.Name
strSteuerelementName = Me.Label1.Name
Mit den Eigenschaften können charakteristische Attribute von Objekten geändert werden. Wichtig ist, dass Eigenschaften gesetzt oder abgefragt werden können. Wird eine Eigenschaft zugewiesen, so steht links des Gleichheitszeichens das Objekt mit seiner Eigenschaft, rechts des Gleichheitszeichens die gesetzte Eigenschaft.
Ähnlich sieht es aus, wenn Eigenschaften abgefragt werden. Dann wird überprüft, ob das Objekt links des Gleichheitszeichens mit seiner Eigenschaft die Eigenschaft rechts des Gleichheitszeichens besitzt.
Im Beispiel
lblHöhe.Font.Name = "Comic Sans MS"
wird die Eigenschaft »Name« der Eigenschaft »Font« des Objekts »lblHöhe« auf »Comic Sans MS« gesetzt. Dagegen wird im folgenden Beispiel überprüft, ob die Eigenschaft »Name« der Eigenschaft »Font« des Objekts »lblHöhe« auf »Comic Sans MS« gesetzt wurde:
If lblHöhe.Font.Name = "Comic Sans MS" Then _
MessageBox("Comic Sans MS")
Die Grenzen zwischen Eigenschaften setzen und Eigenschaften abfragen weisen in der Syntax keine Unterschiede auf. Es findet sich - anders als bei den Methoden - immer ein Gleichheitszeichen. Methoden werden immer mit einer Klammer beendet.
Achtung: Einige Eigenschaften können nur abgefragt, nicht aber gesetzt werden, zum Beispiel der Name eines Steuerelements. Er liegt zur Laufzeit schon fest und kann folglich nicht geändert werden. Die Eigenschaft ist somit schreibgeschützt.
In VB.NET existieren mehrere hundert Objekte. Es ist ebenso müßig, sie zu zählen, wie die Zahl der verschiedenen Methoden und Eigenschaften. Deshalb stellt VB.NET einige Hilfsfunktionen zur Verfügung, da sich niemand alle Objekte, Methoden und Eigenschaften merken soll.
Die AutoComplete-Funktion
Wenn ein Objekt erkannt wird, stellt VB.NET nach Eingabe eines Punktes eine Liste von Methoden und Eigenschaften zur Verfügung. Zum Beispiel erscheint nach der Eingabe von Me. die Liste der zugehörigen Methoden und Eigenschaften.
Steht der Zeiger auf der richtigen Eigenschaft oder Methode, so kann diese mittels der (Enter)-, der (____)- oder der (ÿ)-Taste bestätigt und damit in den Quelltext eingefügt werden. Wird eine Eigenschaft oder eine Methode geändert, dann genügt es, den letzten Buchstaben zu löschen, um erneut die Liste zu erhalten.
Das heißt, dem Objekt »Me« oder dem Objekt »Label1« werden nach der Eingabe des Punkts in die Liste seine Eigenschaften und Methoden angezeigt. Findet der Benutzer die Eigenschaft »WindowState« oder »Font.Bold«, kann er ein Gleichheitszeichen (»=«) setzen und erhält dadurch eine Liste aller möglichen Zustände:
Online-Hilfe
Es gibt sehr viele verschiedene vorgegebene Methoden, Eigenschaften und Ereignisse. Sie können über Ansicht . Andere Fenster . Objektbrowser, (Strg) + (Alt) + (J) oder das entsprechende Symbol angezeigt werden, wenn Sie nicht mit der AutoComplete-Funktion arbeiten möchten oder etwas ganz Spezielles suchen.
Zugriff auf Objektvariablen
Objekte können auch deklariert werden. Dazu gibt es zwei Möglichkeiten. Man könnte eine Variable möglichst allgemein deklarieren und sie im Laufe der Prozedur füllen. Beispielsweise so:
Dim t As TextBox
t = Me.txtName
If t.Text = "" Then
MessageBox.Show _
("Hey, Benutzer, dein Name fehlt!")
t.Select()
Exit Sub
End If
MessageBox.Show("Achtung: " & t.Text & _
"Jetzt gibt es " & strGetränk & _
strZusatz & "!")
Das Objekt t wird deklariert und gefüllt. Natürlich kann dies bereits bei der Deklaration geschehen:
Dim t As TextBox = Me.txtName
Nun kann mit der Variablen t gearbeitet werden und die bekannten Methoden und Eigenschaften »Select« und »Text« können darauf angewendet werden. So ein Vorgehen macht den Code flexibel und leicht erweiterbar. Man muss nicht immer den Namen des Objekts kennen, sondern greift nur auf eine Objektvariable zurück.
Eine zweite Variante steht zur Verfügung: Man kann die Variable t auch allgemein deklarieren:
Dim t As Object
und anschließend auf das Textfeld zugreifen:
t = Me.txtName
Der Nachteil hierbei ist (neben einem erhöhten Speicherplatz), dass man nun die Eigenschaften der Objekte kennen muss. Diese Art der Programmierung wird »late binding« genannt, da die genaue Festlegung erst sehr spät erfolgt. Allerdings gibt es einige Gründe für »late binding«, über die wir noch sprechen werden.
Besser ist es jedoch, die Variablen früh zu spezifizieren (»early binding«):
Dim t As TextBox = Me.txtName
Nun hilft die AutoComplete-Funktion beim Auffinden der richtigen Objekte.
|